#ifndef FONTMANAGER_H
#define FONTMANAGER_H
#include "StompedReality/Base.h"
#include "StompedReality/Core.h"
#include "StompedReality/Core/GameAccess.h"
#include "StompedReality/Math/Vector2.h"
#include <map>
namespace StompedReality
{
namespace Graphics
{
class DLL_EXPORT FontManager : public StompedReality::GameAccess
{
 protected:

  typedef std::map< uint64_t, int> FontMap;
  FontMap _fontMap;
  int _defaultFont;

 public:

  FontManager( );
  virtual ~FontManager( );

 public:

  uint64_t createKey( const char* font, int size );
  uint64_t createKey( StompedReality::ID id, int size );
  void selectFont( const char* font, int size );
  void createFont( const char* font, int size );
  int getFont( const char* font, int size );
  int getFont( StompedReality::ID id, int size );
  bool hasFont( const char* font, int size );
  bool hasFont( StompedReality::ID id, int size );

 public:

  virtual int loadFont( const char* font, int size ) = 0;
  virtual void selectFont( StompedReality::ID id, int size ) = 0;
  virtual StompedReality::Math::Vector2 calculateSize( const char* font, int size, const char* txt ) = 0;
};

}
}
#endif // FONTMANAGER_H
